{extend name="layout" /}

{block name="title"}
<title>表单验证- thinkPHP极速后台开发</title>
<meta name="title" content="表单验证 - thinkPHP极速后台开发">
<meta name="keywords" content="表单验证,php,后台开发包，thinkphp、easyadmin、admin,easy,thinkeasyadmin">
<meta name="description" content="配置表单验证;easyadmin灵活可定制的thinkphp的后台开发工具包,助你快速开发后台">
{/block}


{block name="main"}

<fieldset class="layui-elem-field" id="config">
    <legend>表单验证</legend>
    <div class="layui-field-box">
        <p>表单验证需要在字段的属性上面定义<code>verify</code>选项,可以是自定义匿名回调函数,也可以实例化<code>easyadmin\app\libs\Verify</code>类,然后配置规则</p>
        <p>表单验证区分必填和非必填, 所以必填单独做了一个验证选项</p>
        <pre class="php">
#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\PageForm;
use easyadmin\app\columns\form\FormText;


class Category extends \easyadmin\controller\Admin
{

    /**
     * 配置表单
     * @param PageForm $page
     */
    protected function configFormField(PageForm $page)
    {
        $page
            ->addField('name', '分类名称', FormText::class,[

                'required' => true,  //是否必填


                //定义验证规则, 用户输入的值长度大于0 个字符才会进入验证
                // 1. 使用 Verify 类,然后配置规则
                'verify' => (new Verify())
                    ->addRule('chinese', '名称请输入中文')
                    ->addRule('maxlength', '名称不能超过5个字符', 5)
                    ->addRule('minlength', '名称不能少于过2个字符', 2)
                    ->addRule('reg', '请输入 重庆', '/^重庆$/') // 使用正则自定义验证规则

                // 2. 声明匿名函数验证
                // 验证正确 返回 true  错误返回错误提示  注: 正必须是 返回 true
                'verify' => function ($val) {
                    if ($val != '583161908') {
                        return 'QQ 群是 583161908, 请输入: 583161908';
                    }
                    return true;
                }
            ]);

    }
}

</pre>


        <fieldset id="liseField" class="layui-elem-field layui-field-title">
            <legend>addRule 方法 参数说明:</legend>
            <div class="layui-field-box">
                <table class="layui-table">
                    <thead>
                    <tr>
                        <th>字段</th>
                        <th>说明</th>
                        <th>类型</th>
                        <th>必填</th>
                        <th>默认值</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr>
                        <td>rule</td>
                        <td>验证规则 <br>
                            chinese: 只能输入中文 <br>
                            username: 用户账号, 大小写带下划线 <br>
                            mobile: 手机号码 <br>
                            phone_num: 座机号码 <br>
                            idcard: 18位身份证 <br>
                            number: 只能输入数字 <br>
                            float: 只能输入小数 <br>
                            email: 邮箱 <br>
                            url: 网址 <br>
                            ip: ip <br>
                            date: 日期或者日期时间 2021-03-09 或者 2021-03-09 18:00:59 <br>
                            max: 最大值; 需要 opt 参数指定最大值 <br>
                            min: 最小值; 需要 opt 参数指定最小值 <br>
                            maxlength: 最大长度; 需要 opt 参数指定最大长度 <br>
                            minlength: 最小长度; 需要 opt 参数指定最小长度 <br>
                            reg: 正则验证: 需要 opt 参数指定 正则表达式 <br>
                        </td>
                        <td>string</td>
                        <td>是</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>msg</td>
                        <td>错误提示消息</td>
                        <td>string</td>
                        <td>是</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>opt</td>
                        <td>选项,配合rule使用; 如果 rule 规则需要另外一个值来比对,则在这里填写 <br>
                            示例: <br>
                            ->addRule('maxlength', '名称不能超过5个字符', 5) <br>
                            ->addRule('minlength', '名称不能少于过2个字符', 2) <br>
                            ->addRule('reg', '请输入 重庆', '/^重庆$/') <br>
                        </td>
                        <td></td>
                        <td>否</td>
                        <td></td>
                    </tr>
                    </tbody>
                </table>
            </div>
        </fieldset>


    </div>
</fieldset>


{/block}
